package com.gitee.wsl.struct.product.money
//
// interface Money {
//
//     operator fun plus(money: Money): Money
//
//     operator fun minus(money: Money): Money
//
//     operator fun times(money: Money): Money
//
//     operator fun times(ratio: Ratio): Money
//
//     operator fun times(
//        scalar: Int
//    ): Money = this * scalar.toMoneyRatio()
//
//     operator fun compareTo(money: Money): Int
//
//    /**
//     * A ratio to multiply Money. I can be used for representing
//     * small ratios, like price per LLM token.
//     */
//     interface Ratio {
//
//         operator fun times(money: Money): Money
//
//         companion object
//
//    }
//
//    companion object
//
//}
//
//
//fun Money(amount: String): Money = NonJvmMoney(
//    BigDecimal.parseString(amount)
//)
//
//@Suppress("ObjectPropertyName")
//private val _ZERO = NonJvmMoney(BigDecimal.ZERO)
//  val Money.Companion.ZERO: Money get() = _ZERO
//
//@Suppress("ObjectPropertyName")
//private val _ONE = NonJvmMoney(BigDecimal.ONE)
//  val Money.Companion.ONE: Money get() = _ONE
//
//  fun Money.Companion.Ratio(
//    value: String
//): Money.Ratio = NonJvmMoney.NonJvmRatio(
//      BigDecimal.parseString(value)
//  )
//
//@Suppress("ObjectPropertyName")
//private val _RATIO_ONE = NonJvmMoney.NonJvmRatio(BigDecimal.ONE)
//  val Money.Ratio.Companion.ONE: Money.Ratio get() = _RATIO_ONE
//
//  fun Int.toMoneyRatio(): Money.Ratio =
//      NonJvmMoney.NonJvmRatio(BigDecimal.fromInt(this))
